In network communications, it is often desirable to intelligently balance the flow of information between multiple network devices. That is, data transmissions over a network may be monitored and directed so that the best available communication channel between two communication devices is used. This is sometimes accomplished by ascertaining channel information from a transmission protocol. For example, Transmission Control Protocol (TCP) guarantees reliable and in-order delivery of data packets from sender to receiver by using an acknowledgement scheme to indicate whether each data packet is received. By using packet size information, transmission time information, and acknowledge messages, traffic information on a particular channel between two network devices may be ascertained. While such data traffic management permits sender-side devices to evaluate conditions of a transmission channel, it gives receiver-side devices little choice on which channel to receive on.
Additionally, transmission information between two devices is not always available. For instance, voice-over IP utilizes a user data protocol (UDP) that does not provide the reliability and ordering guarantees that TCP does. Consequently, it is difficult to ascertain transmission information and perform traffic management using UDP.
Even where traffic management is feasible, conventional traffic distribution algorithms often fail to account for variances in communication links. That is, in a communication system where multiple links are available between two devices, many traffic distribution algorithms fail to recognize that one link may be better in one direction than the other link and/or take advantage of this information for more efficient communications.
Hence, it is desirable to find a traffic allocation scheme that intelligently transmits data over multiple links with unique characteristics.